package org.devocean.groupbuying.service;

import java.util.List;

import org.devocean.groupbuying.domain.Deal;
import org.devocean.groupbuying.domain.Discount;
import org.devocean.groupbuying.domain.Explored;
import org.devocean.groupbuying.domain.ExploredDetail;
import org.devocean.groupbuying.domain.Formula;
import org.devocean.groupbuying.domain.Plan;
import org.devocean.groupbuying.domain.Product;
import org.devocean.groupbuying.domain.Promotion;

public interface ExploredService {

	List<Explored> getAllExploreds();

	List<Explored> getAllExploreds(String lang);

	long countExploreds();

	long countExploreds(String lang);

	List<Explored> getExploredsEntries(int firstResult, int maxResults);

	List<Explored> getExploredsEntries(String lang, int firstResult,
			int maxResults);

	List<Explored> getExploredsEntriesByDate(String lang, int firstResult,
			int maxResults, String order);

	List<Explored> getExploredsEntriesByRating(String lang, int firstResult,
			int maxResults, String order);

	List<Explored> getExploredsEntriesWithDeals(String lang, int firstResult,
			int maxResults, String order);

	List<Explored> getExploredsEntries(String lang, int firstResult,
			int maxResults, Integer categorie);

	Explored getExploredById(int id);

	Explored getExploredById(String lang, int id);
	Explored getExploredByProduct( int id);

	void deleteExplored(int id);

	Explored addOrUpdateExplored(Explored explored);

	Explored addOrUpdateExplored(Deal deal);

	Explored addOrUpdateExplored(Promotion promotion);

	Explored addOrUpdateExplored(Product product);
	
	public List<Explored> getExploredByMerchants(Integer merchantID,String lang);

	Explored addOrUpdateExplored(Plan plan);

	Explored addOrUpdateExplored(Formula formula);

	Explored upToDateExplored(Explored explored);

}
